Tasten

← Zurück

Von Erhard an Olix

Hi, kannst Du mir das Problem bitte noch einmal beschreiben?

Antworten

Klar, falls Du mein Problem mit den prellenden Funktionstasten meinst:

Ich frage in meinem Programm die Select Taste ab um einen Zähler zu erhöhen. Dabei prüfe ich ob die Taste gedrückt wurde und um zu entprellen warte ich dann noch bis sie wieder losgelassen wird. Im Emulator funktioniert das auch toll und der Zähler erhöht sich pro Tastendruck und wieder loslassen um genau eine Stelle. Auf der echten Hardware springt der Zähler aber immer gleich um mehrere Stellen. Hier mein Code (natürlich auf das wesentliche vereinfacht):

LOOP1: LDA #2 BIT CONSOL ; SELECT? BNE LOOP1 ; NEIN > VON VORNE NOSLCT1: BIT CONSOL BEQ NOSLCT1 ; ENTPRELLEN INC SCHWRGRD ; SCHWIERIGKEITSGRAD ERHOEHEN LDA SCHWRGRD CMP #$0A ; FALLS LEVEL 10 ... BNE NEUSCHWR LDA #0 ; WIEDER AUF 0 SETZEN STA SCHWRGRD NEUSCHWR: CLC ADC #$10 STA TEXTMEM+9 ; ZIFFER AUSGEBEN JMP LOOP1

Ich hänge mal ein kleines Programm an, indem ich genau diese Funktion eingebaut habe:

SELECT.txt SELECT.XEX

Probiere es doch einfach mal selbst im Emulator und auf echter Hardware aus.

Und noch zwei kleine Filmchen des Problems in der ZIP Datei:

Emulator.zip

Antworten

Hallo Olix,

ich hab jetzt noch keine Zeit, in die Anhänge reinzuschauen.

Aber ich meine in Erinnerung zu haben, daß vor Abfrage der Konsolentasten eine 8 (?) in das Register geschrieben werden soll.

Vielleicht hilft das?

Viele Grüße

Erhard

Antworten

Die 8 wird vom System-VBI automatisch beschrieben und hat nichts mit der Abfrage der Tasten zu tun. Bit 3 des CONSOL Registers ($D10F) hat beim Schreiben die Funktion die Lautsprecherfunktion auf inaktiv zu setzen. Dies wird wohl für das Tastaturgeräusch genutzt.

Das steht so im ATARI Profibuch, ABBUC Ausgabe Seite 61/62

Eine kleine Verzögerungsschleife nach der Abfrage hat mein Problem ja dann auch gelöst. Ich werde da aber selbst auch noch weiter forschen....

Antworten

Hi,

daß die 8 im VBI geschrieben wird wußte ich, aber ich dachte, daß Du den VBI vielleicht durch eine eigene Routine ersetzt hast und die 8 somit nicht geschrieben wird und daß das Nichtschreiben der 8 dann vielleicht dazu führt, daß das Lesen von Consol zu nicht stabilen Werten führt oder daß z.B. gespeichert bleibt, daß die START-Taste gedrückt wurde, was dann nur durch Schreiben der 8 zurückgesetzt wird.

Aber okay, ist ja erledigt.

Antworten